package top.z.work.module.system.constant;

import cn.hutool.core.util.ArrayUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * OAuth2授权类型(模式)的枚举
 */
@AllArgsConstructor
@Getter
public enum OAuth2GrantTypeEnum {

    IMPLICIT("implicit"),                     // 简化模式
    PASSWORD("password"),                     // 密码模式
    REFRESH_TOKEN("refresh_token"),           // 刷新模式
    AUTHORIZATION_CODE("authorization_code"), // 授权码模式
    CLIENT_CREDENTIALS("client_credentials"), // 客户端模式
    ;

    private final String grantType;

    public static OAuth2GrantTypeEnum getByGranType(String grantType) {
        return ArrayUtil.firstMatch(o -> o.getGrantType().equals(grantType), values());
    }

}
